<?php
require_once 'Zend/Application.php';
require_once 'Zend/Test/PHPUnit/ControllerTestCase.php';

abstract class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
    /**
     * @var Zend_Application
     */
    protected $_application;

    public function setUp()
    {
        // указываем функцию, которая будет выполнена до запуска тестов
        $this->bootstrap = array($this, 'appBootstrap');
        parent::setUp();
    }

    public function appBootstrap()
    {
        // инициализируем наше приложение
        $this->_application = new Zend_Application(
            APPLICATION_ENV,
            APPLICATION_PATH . '/configs/application.ini'
        );

        $this->_application->bootstrap();
    }

    protected function _doLogin($realm = 'administrator', $login = 'admin', $password = '1234qwer')
    {
        $authAdapter = new Zend_Auth_Adapter_Digest(APPLICATION_PATH . '/configs/auth', $realm, $login, $password);

        $result = $authAdapter->authenticate();

        if ($result->isValid()) {
            Zend_Auth::getInstance()->getStorage()->write($authAdapter->getRealm());
        }

        return $result;
    }

    public function providerAdminUrl()
    {
        return array(
            array('/admin/'),
            array('/admin/stock/'),
            //TODO нужно добавить сюда все возможные урлы админки
        );
    }

    public function usersProvider()
    {
        return array(
            array( 'administrator', 'admin', '1234qwer'),
            array( 'administrator', 'admin', '1234qw'),
        );
    }
}